# python的基本数据类型
name = "小丁" #todo：字符串变量 ，str类型，任何用双引号、三引号、单引号包裹起来的，都是字符串
n1 = '小丁' # 单引号包裹起来的，都是字符串
n2 = """小杨""" # 三引号包裹起来的，都是字符串
age = 18 # todo：整数类型，int型
fl = 1.65 # todo：带有小数的，都是浮点型float
fl1 = [1,2,3,4,5] # todo：列表 list
fl2 = (1,2,3) # todo：元组 tuple
fl3 = {1,2,3} # todo：集合 set
fl4 = {"姓名":"小杨"} # todo：字典 dict
# 打印变量，也可以查看变量是属于哪个类型的，type检查数据类型
# print(name)
# print(type(name)) # 打印它的变量类型  <class 'str'>

# print(n1)
# print(type(n1)) # <class 'str'>

# print(n2)
# print(type(n2)) # <class 'str'>

# print(age)
# print("age的变量类型是：%s" % type(age)) # % 占位符，占一个位置  age的变量类型是：<class 'int'>

# print(fl)
# print("fl的变量类型是：%s" % type(fl)) # fl的变量类型是：<class 'float'>

# print(fl1)
# print("fl1的变量类型是：%s" % type(fl1)) #fl1的变量类型是：<class 'list'>

# print(fl2)
# print("fl2的变量类型是：%s" % type(fl2)) # fl2的变量类型是：<class 'tuple'>

# print(fl3)
# print("fl3的变量类型是：%s" % type(fl3)) # fl3的变量类型是：<class 'set'>

# print(fl4)
# print("fl4的变量类型是：%s" % type(fl4)) # fl4的变量类型是：<class 'dict'>
 # todo：变量一定要遵循先定义后使用，否则报错
# print(aa) # todo: NameError: name 'aa' is not defined

# name = "小杨"
# print("我的名字是：%s" % name) # todo：【%s】占位任何的数据类型

"""# 标识符
a = "变量a"
print(a)
_ = "变量_"
print(_)
_a = "_a变量"
print(_a)
# 1 = "1变量"
# print(1)
a1 = "a1变量"
print(a1)
print1 = "print变量名称"
print(print1)

# 定义变量一定要见名知意
student_no1 = "小丁"
StudentNo2 = "小杨"
studntNo3 = "小张"
print(f"沁创一期的学生有：{student_no1},{StudentNo2},{studntNo3}") #todo：占位符的一种

# 整数可以直接拿来用，不需要定义变量
print(12)"""

# python 可以进行数学运算
# 浮点数进行运算时，可能会得到一个不精确的结果 todo：每个语言都这样
# c = 0.1 + 0.2
# print(c)

# 变量名重复定义
# c = 1.2
# c = 1.1 # 相同变量定义，会将之前的内容覆盖掉
# print(c)

# ================= str字符串 ========================
# s = "你不用可以改变自己，我来适应你就好了"
# s1 = "心中万点涟漪，都是为你而动。眼中万里柔情，皆是因你而起"
# print(s1)

# 单引号双引号不可以混合使用
# s2 = '"心中万点涟漪，都是为你而动。眼中万里柔情，皆是因你而起。"
# print(s2) # SyntaxError: EOL while scanning string literal

# 有单引号开头，就要有结尾包住，这种就可以
# s2 = '"心中万点涟漪，都是为你而动。眼中万里柔情，皆是为你而起"'
# print(s2) # 会把里面的双引号打印出来 "心中万点涟漪，都是为你而动。眼中万里柔情，皆是为你而起"

# 双引号套单引号
# s3 = "'心中万点涟漪，都是为你而动。眼中万里柔情，皆是因你而起。'"
# print(s3) # '心中万点涟漪，都是为你而动。眼中万里柔情，皆是因你而起。' 会把里面的单引号打印出来

# 三引号包起来进行打印
# s = """
# 一二三四五，
# 上山打老虎。
# 老虎没打到，
# 打到小松鼠
# """
# print(s)

# 转义字符
# \n 换行符
# print("今天星期二\n 天气还不错\n 可以出去打打篮球")
# \t 制表符 todo：相当于退了一个制表符，四个空格的空间
# print("沁创学习python第二个月\t正在学习python基础")

# 不转义进行打印
# print(r"今天星期二\n 天气还不错") # todo：在字符串最前面加上r就可以
# print("今天星期二\\n 天气还不错") # \从第一个开始往后识别，把第二个\转义成\本身进行输出，n被识别成字符串的一部分

# 字符串拼接
# a = "abc" + "haha" + "哈哈"
# # print(a) # 输出的是：abchaha哈哈
# print(a + 100) # 会报错，因为字符串不可以直接和整数相加的 TypeError: can only concatenate str (not "int") to str

# 占位符
# b = "假如生活出卖了我 %s" % "我希望是论斤卖"
# print(b)

# %f 浮点数占位符 todo：浮点数默认小数点后有6位
b1 = "hello %f" % 1.12
# print(b1)
# todo：保留两个精度位
b2 = "hello %.2f" % 1.12
# print(b2)

# 错用占位符会报错
# b3 = "hello %f" % "今天天气很好"
# print(b3) # TypeError: must be real number, not str

# 用字符串%s占位都是通用的
b4 = "hello %s" % 1.2
# print(b4)

# 整数占位符
b5 = "hello %d" % 3
# print(b5)

# 格式化字符串
name = "小丁"
b6 = f'Hello {name} 今天天气很好'
print(b6)

# todo:复制字符串
b7 = "abc" * 2
print(b7) # abcabc

# 布尔值只有两个情况：真 或者是 假
a1 = True
a2 = False
# print(a1)
# print(a2)

# 空值
a3 = None
# print(a3)
# print(type(a3)) # <class 'NoneType'>

# 变量和变量之间都是相互独立的，即使他们的值一样
a4 = 5
a5 = 5
# print(a4)
# print(a5)
a5 = 6
print(a4)
print(a5)
